The architecture of computer networks has changed dramatically over the last several decades. In the seventies and early eighties, probably the most prevalent architecture was the mainframe architecture in which a very powerful mainframe computer contained all processing and storage power and users accessed the mainframe via so called “dumb” terminals, which had no processing power and acted merely as user interfaces to the mainframe. The mainframe architecture is prone to system failures because all processing power is located in the powerful mainframe computer, and while the mainframe computer is down no users can access the system. In the eighties, advancements in semiconductor technology enabled significant processing power to be placed on a user's desktop in the form of a personal computer. Consequently, the predominant computer network architecture defaulted into a distributed architecture, with a number of personal computers being interconnected via a communications network, such as a local area network. Under this type of architecture, each personal computer was able to share resources with the other computers, but many resources, such as application programs, were primarily stored and run independently on each personal computer, due, in part, to bandwidth limitations of communicating over the network.
In today's computing environment, the Internet forms part of a Global Communications Network that interconnects millions of computers via the client-server network architecture. In the client-server architecture, servers are powerful computers dedicated to managing network resources, and clients are personal computers or workstations that run application programs and rely on servers for computer resources such as files and even processing power. The client-server architecture has become a viable network architecture due in part to the dramatically increased bandwidth provided by the communications infrastructure forming the backbone of the Internet, as will be appreciated by those skilled in the art. The distributed processing power between the client and server systems has led to a myriad of third parties that provide software services to a number of users over the Internet or other wide area network. These third parties are known as Application Service Providers (“ASPs”) and they allow users to access software services provided by the ASPs by accessing a server maintained by the ASP over a suitable communications network. FIG. 1 is a functional block diagram illustrating a conventional ASP system 100 including a client computer system 102 that accesses an ASP server computer system 104 over a communications network 106, which may be the Internet or other suitable communications network. The client computer system 102 accesses the server computer system 104 to utilize the specific software services provided by the server computer system, which may be simply downloading a desired application program or supplying input to an application running on the server computer system to obtain desired data, as will be described in more detail below.
In the example of FIG. 1, the client computer system 102 includes a browser 108 that sends Hypertext Transfer Protocol (“HTTP”) requests to the server computer system 104 over the communications network 106. In response to the applied requests, a server engine 110 on the system 104 processes the requests and provides files to the client computer system 102 such as Web pages 112 and client application programs 114. The client application programs 114 are shown as including a number of individual application programs AP1-APN, each of which may be independently selected and transferred to the client computer system 102. The application programs 114 are an example of one type of computer resource that an ASP provider may make available to users, as will be appreciated by those skilled in the art. The Web pages 112 function as the client interface to the ASP server computer system and allow the client computer system 102 to, among other things, select which ones of application programs 114 are to be transferred.
In operation, a user of the client computer system 102 accesses the ASP server computer system 104 and typically provides a request that includes various user information, such as user name, credit information, and which ones of the client application programs 114 the user desires to access. The server engine 110 processes the request, which includes verifying the user's credit, and thereafter transfers the selected application programs 114 to the client computer system 102. The user of the client computer system 102 thereafter utilizes the transferred application programs 114 as desired.
Depending on the type of service been provided by the ASP server computer system 104, the transferred application programs 114 may correspond to either the entire executable application program including all required system files, such as any required dynamic link library files, or may be an application “stub” or module containing only a portion of the application. When the entire executable application program 114 is transferred, the user simply opens this program as he would any other programs stored on the system 102 and need not be connected to the server computer system 104 when using the application program. This situation may be termed a broken-connection mode of operation because the client computer system 102 and server computer system 104 are not communicating when the application program 114 is being run. In contrast, when an application module is transferred to the client computer system 102, upon opening this module the application is initiated and the server computer system 104 is contacted and thereafter communicates with the client computer system to execute the application program. This situation may be termed a continuous-connection mode of operation because the client computer system 102 and server computer system 104 are communicating when the application program 114 is being run.
The user of the client computer system 102 must, of course, pay for the application programs 114 provided by the server computer system 104. Typically, the user pays for the application programs 114 in one of two ways. In the broken-connection situation, a user typically pays as he goes, meaning that the user simply pays for each application program 114 downloaded to the client computer system 102. In the continuous-connection situation, the user typically pays via a subscription agreement, allowing the user to pay a periodic subscription fee and obtain access to the services provided by the ASP server computer system 104. A user is typically assigned a username and password, which the user supplies to gain access to the application programs 114 corresponding to his subscription agreement.
Each of the broken-connection and the continuous-connection situations has drawbacks, both from the user's and ASP's perspectives. When a user downloads an application program 114 to the client computer system 102, the user may thereafter use the program on multiple computer systems and provide copies of the program to other users. While the terms of the license under which the user agrees to use the application program 114 may proscribe such conduct, the user may nonetheless take such action. In the continuous-connection environment, the user must connect to the server computer system 104 to run the selected application program 114, and this connection can dramatically slow the operation of the program, such as when the server computer system 104 has a large number of client computer systems 102 requesting service. Moreover, although a subscription agreement may be limited to a single user and a single machine, a user may provide his password to others, enabling other users to access the computer resources.
There is a need for providing users access to computer resources offered by ASPs that overcomes at least some of the shortcomings of the existing ASP systems.